import {getVersion,downloadApp} from '@/api/version/version.js'
/**
 * 检查是否有新版本, 
 * apkname: apk名成
 */
export const checkVersion=(apkname)=>{
	// 获取uniapp的app id
	let appid = plus.runtime.appid
	plus.runtime.getProperty(appid,async (widgetInfo)=>{
			let res= await getVersion({appid:appid})
				.catch(err=>{
					serverErrToast(err);
				})
				
			if(res.data.version!==widgetInfo.versionCode){
				uni.showModal({
					title:'升级',
					content:'APP有新版本,请下载升级\n'+appid,
					showCancel:false,
					success(res) {
						if(res.confirm){
							updateVersion(apkname);
						}
					}
				})
			}
	})
}

const updateVersion=(apkname)=>{
	uni.showLoading({
		title:'下载更新中'
	})
	downloadApp({apkname:apkname})
		.then(res=>{
			uni.hideLoading()

			plus.runtime.install(
				res.tempFilePath,		// 下载完的文件放在tempfilepath中
				{force:false},			//true时,强制安装,false时进行版本号校验
				(installResult)=>{		//更新成功回调
					uni.showToast({
						title:'更新成功'
					})
					plus.runtime.restart();		//重启
				},
				(err)=>{
					uni.showToast({
						title:'更新失败',
						image:'/static/img/version_err.png',
						duration: 3000,
						mask:true,
						complete() {
							uni.$u.sleep(3500).then(()=>{
								plus.runtime.quit()
							})
						}
					})
				}
			)
			
		})
		.catch(err=>{

			serverErrToast('APK下载错误')
		})
}

const serverErrToast=(err)=>{

	if(uni.$u.test.isEmpty(err.code)){
		uni.showToast({
			title:'服务器异常',
			image:'/static/img/server_err.png',
			duration: 3000,
			mask:true,
			complete() {
				uni.$u.sleep(3500).then(()=>{
					plus.runtime.quit()
				})
			}
		})
		return
	}
	uni.showToast({
		title:err.msg,
		image:'/static/img/server_err.png',
		duration: 3000,
		mask:true,
		complete() {
			uni.$u.sleep(3500).then(()=>{
				plus.runtime.quit()
			})
		}
	})
}